package Dimensionnement;

import hibernate.FournisseurProduit;
import hibernate.Produit;
import hibernate.Site;
import hibernate.StockSecu;
import hibernate.siteProduit;

import java.io.*;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.servlet.*;
import javax.servlet.http.*;

import net.sf.hibernate.HibernateException;

public class Servlet extends HttpServlet {

	protected void doPost(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {

		HttpSession session = request.getSession(true);

		if (request.getParameter("button").equals("Dimensionner les stocks")) {

			TraitementDonnees donnees = null;
			try {
				donnees = new TraitementDonnees();
			} catch (HibernateException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}

			try {
				request.setAttribute("TousSite", donnees.recuperer_Lessite());
				request.setAttribute("TousProduit",
						donnees.recuperer_Lesproduit());
			} catch (HibernateException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

			getServletContext().getRequestDispatcher("/form.jsp").forward(
					request, response);
			return;

		}

		if (request.getParameter("button").equals("Calculer")) {

			String[] boutique = request.getParameterValues("boutique");
			String[] depot = request.getParameterValues("depot");
			String[] produit = request.getParameterValues("produit");
			String[] classe = request.getParameterValues("classe");

			List<Integer> boutiques = new ArrayList<Integer>();
			List<Integer> depots = new ArrayList<Integer>();
			List<Integer> produits = new ArrayList<Integer>();
			List<String> classes = new ArrayList<String>();
			List<List<String>> nom = new ArrayList<List<String>>();
			TraitementDonnees t = null;
			try {
				t = new TraitementDonnees();
			} catch (HibernateException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}

			if (boutique != null)
				for (int i = 0; i < boutique.length; i++) {
					boutiques.add(Integer.parseInt(boutique[i]));

				}

			if (produit != null)
				for (int i = 0; i < produit.length; i++) {
					produits.add(Integer.parseInt(produit[i]));

				}

			if (depot != null)
				for (int i = 0; i < depot.length; i++) {
					depots.add(Integer.parseInt(depot[i]));

				}

			if (classe != null)
				for (int i = 0; i < classe.length; i++) {
					classes.add(classe[i]);

				}
			int anneed = Integer.parseInt(request.getParameter("anneed"));
			int moisd = Integer.parseInt(request.getParameter("moisd"));
			int anneef = Integer.parseInt(request.getParameter("anneef"));
			int moisf = Integer.parseInt(request.getParameter("moisf"));
			double taux = Double.parseDouble(request.getParameter("taux"));
			String maille = request.getParameter("maille");

			// Tous

			String allboutique = request.getParameter("allboutique");
			String alldepot = request.getParameter("alldepot");
			String allproduit = request.getParameter("allproduit");
			String allclasse = request.getParameter("allclasse");

			session.setAttribute("boutiques", boutiques);
			session.setAttribute("depots", depots);
			session.setAttribute("produits", produits);
			session.setAttribute("classes", classes);
			session.setAttribute("anneed", anneed);
			session.setAttribute("anneef", anneef);
			session.setAttribute("moisf", moisf);
			session.setAttribute("moisd", moisd);
			session.setAttribute("taux", taux);
			session.setAttribute("maille", maille);
			session.setAttribute("allboutique", allboutique);
			session.setAttribute("alldepot", alldepot);
			session.setAttribute("allproduit", allproduit);
			session.setAttribute("allclasse", allclasse);

			if ((allboutique == null && boutique == null && depot == null && alldepot == null)
					|| (allproduit == null && produit == null)
					|| (allclasse == null && classe == null)
					|| (anneed > anneef)
					|| (anneed == anneef && moisd >= moisf)) {
				getServletContext().getRequestDispatcher("/ko.jsp").forward(
						request, response);
			} else {

				List<List<Double>> resultat = new ArrayList<List<Double>>();
				List<Double> resu = null;
				List<Integer> info = new ArrayList<Integer>();
				List<List<Integer>> infos = new ArrayList<List<Integer>>();
				int conso = 0;
				List<String> cls = new ArrayList<String>();
				ControleurDimensionnement calcul = new ControleurDimensionnement();

				try {

					List<Integer> all_b = calcul.ToutBoutiquesID();
					List<Integer> all_d = calcul.ToutdepotID();
					List<Site> all_s = calcul.Toutsite();
					List<Produit> all_p = calcul.Tousproduit();
					List<String> all_c = new ArrayList<String>();
					all_c.add("A");
					all_c.add("B");
					all_c.add("C");
					List<Integer> all_b_d = calcul.ToutBoutiquesID();
					List<Integer> all_d_b = calcul.ToutdepotID();
					List<Integer> b_d = boutiques;

					if (depot != null)
						for (int i = 0; i < depots.size(); i++) {
							all_b_d.add(depots.get(i));
						}

					if (boutique != null)
						for (int i = 0; i < boutiques.size(); i++) {
							all_d_b.add(boutiques.get(i));
						}

					if (depot != null)
						for (int i = 0; i < depots.size(); i++) {
							b_d.add(depots.get(i));
						}

					System.out.println("check = " + allboutique);
					List<Double> result = null;
					int consomation;

					if (allboutique != null && alldepot != null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						System.out.println("prod = " + produit);
						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");

								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");

								return;

							}
						}

						System.out.println("laaaaaaaaa= ");
						for (int i = 0; i < all_s.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();

								List<String> noms = new ArrayList<String>();

								String c = calcul.getClasse(all_s.get(i).getId(),
										prod.get(j));

								if (clas.contains(c)) {
									result = calcul.CalculerStockSecu(all_s
											.get(i).getId(), prod.get(j),
											anneed, moisd, anneef, moisf, taux,
											maille);

									consomation = calcul.CalculerConsoMoy(all_s
											.get(i).getId(), prod.get(j),
											anneed, moisd, anneef, moisf);

									if (result != null) {

										info.add(all_s.get(i).getId());
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);
										noms.add(all_s.get(i).getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(j))
												.getLibelleProduit());
										noms.add(all_s.get(i).getTypeSite());
										nom.add(noms);
										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}

							}
						}

							if (resultat.size() == 0) {

								getServletContext().getRequestDispatcher(
										"/nodata.jsp").forward(request,
										response);
							} else {

								System.out.println("info= " + info.toString());
								session.setAttribute("resultat", resultat);
								session.setAttribute("infos", infos);
								System.out.println("resultat = "
										+ resultat.toString());
								request.setAttribute("resultat", resultat);
								request.setAttribute("infos", infos);
								request.setAttribute("classe", cls);
								request.setAttribute("noms", nom);
								getServletContext().getRequestDispatcher(
										"/consulterDim.jsp").forward(request,
										response);

							}
						
					}

					// choix de quelque boutique tous les depot

					if (allboutique == null && boutique != null
							&& alldepot != null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();
						List<String> noms = new ArrayList<String>();
						System.out.println("prod = " + produit);
						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");

								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");

								return;

							}
						}

						for (int i = 0; i < all_d_b.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(all_d_b.get(i),
										prod.get(j));

								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											all_d_b.get(i), prod.get(j),
											anneed, moisd, anneef, moisf, taux,
											maille);

									consomation = calcul.CalculerConsoMoy(
											all_d_b.get(i), prod.get(j),
											anneed, moisd, anneef, moisf);

									if (result != null) {

										info.add(all_d_b.get(i));
										info.add(all_p.get(j).getId());
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);

										noms.add(t.recuperer_infosite(
												all_d_b.get(i))
												.getLibelleSite());
										noms.add(all_p.get(j)
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												all_d_b.get(i)).getTypeSite());
										nom.add(noms);
										info.add(consomation);
										cls.add(c);
										resultat.add(result);
										infos.add(info);

									}
								}
							}

						}
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {
							System.out.println("info= " + info.toString());
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);
							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}
					// toutes les boutiques et quelques depot
					if (allboutique != null && depot != null
							&& alldepot == null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < all_b_d.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(all_b_d.get(i),
										prod.get(j));
								List<String> noms = new ArrayList<String>();
								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											all_b_d.get(i), prod.get(j),
											anneed, moisd, anneef, moisf, taux,
											maille);

									consomation = calcul.CalculerConsoMoy(
											all_b_d.get(i), prod.get(j),
											anneed, moisd, anneef, moisf);

									if (result != null) {

										info.add(all_b_d.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);

										noms.add(t.recuperer_infosite(
												all_b_d.get(i))
												.getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(i))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												all_b_d.get(i)).getTypeSite());
										nom.add(noms);

										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}
							}

						}
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);

							System.out.println("info= " + info.toString());
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);
							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

					// quelque boutiques et quelque depots

					if (allboutique == null && boutique != null
							&& depot != null && alldepot == null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < b_d.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(b_d.get(i),
										prod.get(j));

								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											b_d.get(i), prod.get(j), anneed,
											moisd, anneef, moisf, taux, maille);
									List<String> noms = new ArrayList<String>();
									consomation = calcul.CalculerConsoMoy(
											b_d.get(i), prod.get(j), anneed,
											moisd, anneef, moisf);

									if (result != null) {

										info.add(b_d.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);
										noms.add(t.recuperer_infosite(
												b_d.get(i)).getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(i))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												b_d.get(i)).getTypeSite());
										nom.add(noms);

										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}
							}

						}
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {
							System.out.println("info= " + info.toString());
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);

							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

					// pas de boutiques tous les depot

					if (allboutique == null && boutique == null
							&& alldepot != null) {
						System.out.println("iciii=" + result);
						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
								System.out.println("prod2=" + prod);
							}
						} else {
							if (produit != null) {
								prod = produits;
								System.out.println("produitt=" + prod);
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
							System.out.println("calss1=" + clas);
						} else {
							if (classe != null) {
								clas = classes;
								System.out.println("calss2=" + clas);
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < all_d.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {
								System.out.println("tout depot=");
								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(all_d.get(i),
										prod.get(j));
								List<String> noms = new ArrayList<String>();
								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											all_d.get(i), prod.get(j), anneed,
											moisd, anneef, moisf, taux, maille);

									consomation = calcul.CalculerConsoMoy(
											all_d.get(i), prod.get(j), anneed,
											moisd, anneef, moisf);

									if (result != null) {

										info.add(all_d.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);

										info.add(consomation);
										noms.add(t.recuperer_infosite(
												all_d.get(i)).getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(j))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												all_d.get(i)).getTypeSite());
										nom.add(noms);

										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}
							}

						}

						System.out.println("rezzz= " + resultat.size());
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {
							System.out.println("info= " + info.toString());
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);
							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

					// que quelques depot
					if (allboutique == null && boutique == null
							&& alldepot == null && depot != null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < depots.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(depots.get(i),
										prod.get(j));
								List<String> noms = new ArrayList<String>();
								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											depots.get(i), prod.get(j), anneed,
											moisd, anneef, moisf, taux, maille);

									consomation = calcul.CalculerConsoMoy(
											depots.get(i), prod.get(j), anneed,
											moisd, anneef, moisf);

									if (result != null) {

										info.add(depots.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);
										noms.add(t.recuperer_infosite(
												depots.get(i)).getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(i))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												depots.get(i)).getTypeSite());
										nom.add(noms);

										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}
							}

						}
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {

							System.out.println("info= " + info.toString());
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);

							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

					// que toute les boutique

					if (allboutique != null && depot == null
							&& alldepot == null) {
						System.out.println("tout boutiques " + all_b.size());
						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();

						if (allproduit != null) {
							System.out.println("proddd = " + all_p.size());
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < all_b.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(all_b.get(i),
										prod.get(j));
								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											all_b.get(i), all_p.get(j).getId(),
											anneed, moisd, anneef, moisf, taux,
											maille);

									List<String> noms = new ArrayList<String>();

									consomation = calcul.CalculerConsoMoy(
											all_b.get(i), prod.get(j), anneed,
											moisd, anneef, moisf);

									if (result != null) {

										info.add(all_b.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);

										noms.add(t.recuperer_infosite(
												all_b.get(i)).getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(j))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												all_b.get(i)).getTypeSite());
										nom.add(noms);

										cls.add(c);
										resultat.add(result);
										infos.add(info);

									}
								}
							}

						}

						System.out.println("rezzz= " + resultat);
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {
							System.out.println("info= " + info.toString());
							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);
							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

					// que quelques boutique

					if (allboutique == null && boutique != null
							&& alldepot == null && depot == null) {

						List<Integer> prod = new ArrayList<Integer>();
						List<String> clas = new ArrayList<String>();
						List<String> noms = new ArrayList<String>();
						if (allproduit != null) {
							for (int i = 0; i < all_p.size(); i++) {
								prod.add(all_p.get(i).getId());
							}
						} else {
							if (produit != null) {
								prod = produits;
							}

							if (produit == null && allproduit == null) {
								System.out
										.println("Selectionnrt un produit ===== PAS DE CALCUL=========");
								return;

							}
						}
						if (allclasse != null) {
							clas = all_c;
						} else {
							if (classe != null) {
								clas = classes;
							}

							if (classe == null && allclasse == null) {
								System.out
										.println("Selectionnrt une classe ===== PAS DE CALCUL=========");
								return;

							}
						}

						for (int i = 0; i < boutiques.size(); i++) {
							for (int j = 0; j < prod.size(); j++) {

								info = new ArrayList<Integer>();
								result = new ArrayList<Double>();
								String c = calcul.getClasse(boutiques.get(i),
										prod.get(j));
								if (clas.contains(c)) {

									result = calcul.CalculerStockSecu(
											boutiques.get(i), prod.get(j),
											anneed, moisd, anneef, moisf, taux,
											maille);

									consomation = calcul.CalculerConsoMoy(
											boutiques.get(i), prod.get(j),
											anneed, moisd, anneef, moisf);

									if (result != null) {
										noms = new ArrayList<String>();

										info.add(boutiques.get(i));
										info.add(prod.get(j));
										info.add(Integer.parseInt((result
												.get(2).toString()).substring(
												0, result.get(2).toString()
														.indexOf("."))) + 1);
										info.add(consomation);
										System.out.println("nom = "
												+ t.recuperer_infosite(
														boutiques.get(i))
														.getLibelleSite());
										noms.add(t.recuperer_infosite(
												boutiques.get(i))
												.getLibelleSite());
										noms.add(t.recuperer_infoproduit(
												prod.get(j))
												.getLibelleProduit());
										noms.add(t.recuperer_infosite(
												boutiques.get(i)).getTypeSite());
										nom.add(noms);

										resultat.add(result);
										infos.add(info);
										cls.add(c);

									}
								}
							}

						}
						if (resultat.size() == 0) {

							getServletContext().getRequestDispatcher(
									"/nodata.jsp").forward(request, response);
						} else {

							session.setAttribute("resultat", resultat);
							session.setAttribute("infos", infos);
							System.out.println("info= " + info.toString());
							System.out.println("resultat = "
									+ resultat.toString());
							request.setAttribute("resultat", resultat);
							request.setAttribute("infos", infos);
							request.setAttribute("classe", cls);
							request.setAttribute("noms", nom);
							getServletContext().getRequestDispatcher(
									"/consulterDim.jsp").forward(request,
									response);
						}
					}

				} catch (HibernateException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}

		}

	}

	protected void doGet(HttpServletRequest request,
			HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		List<String> noms_si = new ArrayList<String>();
		List<String> noms_pro = new ArrayList<String>();
		List<String> consom = new ArrayList<String>();
		List<String> couve = new ArrayList<String>();
		List<String> clas = new ArrayList<String>();
		List<Double> resultat = new ArrayList<Double>();
		TraitementDonnees d = null;
		try {
			d = new TraitementDonnees();
		} catch (HibernateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		HttpSession session = request.getSession(true);
		if (request.getParameter("button") != null) {
			String[] id_site = request.getParameterValues("idsite");
			String[] nom_site = request.getParameterValues("nomsite");
			String[] id_prod = request.getParameterValues("idproduit");
			String[] nom_prod = request.getParameterValues("nomproduit");
			String[] consomoy = request.getParameterValues("consomoy");
			String[] classes = request.getParameterValues("classes");
			// String[] check = request.getParameterValues("check");
			String[] couverture = request.getParameterValues("couverture");

			resultat = new ArrayList<Double>();
			List<Integer> entier = new ArrayList<Integer>();
			noms_si = new ArrayList<String>();
			noms_pro = new ArrayList<String>();
			consom = new ArrayList<String>();
			couve = new ArrayList<String>();
			clas = new ArrayList<String>();

			List<Integer> sit = new ArrayList<Integer>();
			List<Integer> prd = new ArrayList<Integer>();
			;
			Double con;
			Double couv;
			Double re;

			for (int i = 0; i < id_site.length; i++) {

				re = 0.;
				con = Double.parseDouble(consomoy[i]);
				couv = Double.parseDouble(couverture[i]);
				re = con * couv;
				resultat.add(re);
				noms_si.add(nom_site[i]);
				noms_pro.add(nom_prod[i]);
				consom.add(consomoy[i]);
				couve.add(couverture[i]);
				clas.add(classes[i]);
				sit.add(Integer.parseInt(id_site[i]));
				prd.add(Integer.parseInt(id_prod[i]));

			}

			session.setAttribute("sit", sit);
			session.setAttribute("prd", prd);
			session.setAttribute("resul", resultat);
			request.setAttribute("nom_sit", noms_si);
			request.setAttribute("nom_produit", noms_pro);
			request.setAttribute("resul", resultat);
			request.setAttribute("couvertur", couve);
			request.setAttribute("consom", consom);
			request.setAttribute("classs", clas);

			getServletContext().getRequestDispatcher("/valider.jsp").forward(
					request, response);
		}

		if (request.getParameter("Valider") != null) {
			String infos = request.getParameter("Valider");
			List<StockSecu> resu = new ArrayList<StockSecu>();
			System.out.println("infooo= " + infos);
			int t;
			int site = 0;
			int produit = 0;
			int quantite = 0;
			int conso = 0;
			// site, produi, quantite, conso
			for (int i = 0; i < infos.length(); i++) {
				t = infos.indexOf(",");
				site = Integer.parseInt(infos.substring(1, t));
				System.out.println("site= " + site);
				String s = infos.substring(0, infos.lastIndexOf(","));

				int f = 2;
				String m = s.substring(t)
						.substring(t, (s.lastIndexOf(",") - 2));
				while (m.contains(",")) {
					f = f + 1;
					m = s.substring(t).substring(t, (s.lastIndexOf(",") - f));

				}
				produit = Integer.parseInt(s.substring(t).substring(t,
						(s.lastIndexOf(",") - f)));
				System.out.println("produit= " + produit);

				quantite = Integer.parseInt(s.substring(
						(s.lastIndexOf(",") + 2), (s.length())));
				System.out.println("quan= " + quantite);

				conso = Integer.parseInt(infos.substring(
						(infos.lastIndexOf(",") + 2), (infos.length() - 1)));
				System.out.println("conso= " + conso);
				System.out.println("infooo= " + site + "...." + produit
						+ "...." + quantite);

			}

			try {
				if (site != 0 && produit != 0) {
					d.InsererStock(site, produit, quantite);
					StockSecu s = new StockSecu();
					s.setIdProduit(produit);
					s.setIdSite(site);
					s.setStocksecu(quantite);
					resu.add(s);
				}
			} catch (HibernateException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			request.setAttribute("enregistrement", resu);
			String sav = request.getParameter("Information");
			System.out.println("sav======" + sav);
			request.setAttribute("Sav", sav);

			getServletContext().getRequestDispatcher("/Enregister.jsp")
					.forward(request, response);
		}

		if (request.getParameter("validerf") != null) {

			String[] pl = request.getParameterValues("validerf");

			System.out.println("i =" + pl.toString());
			List<Integer> s = (ArrayList) session.getAttribute("sit");
			List<Integer> p = (ArrayList) session.getAttribute("prd");
			List<Double> resu = (ArrayList) session.getAttribute("resul");
			System.out.println("avant sav");

			for (int i = 0; i < pl.length; i++) {

				double dou = resu.get(Integer.parseInt(pl[i]));
				int r = (int) dou + 1;
				try {
					if (s.get(Integer.parseInt(pl[i])) != 0
							&& p.get(Integer.parseInt(pl[i])) != 0) {
						System.out.println("site ="
								+ s.get(Integer.parseInt(pl[i])));
						System.out.println("produit ="
								+ p.get(Integer.parseInt(pl[i])));
						System.out.println("resul =" + r);
						d.InsererStock(s.get(Integer.parseInt(pl[i])),
								p.get(Integer.parseInt(pl[i])), r);

						System.out.println("ok");
					}
				} catch (HibernateException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				}

			}

		}

		/*
		 * if (request.getParameter("recalculer") != null &&
		 * request.getParameter("actuels") != null &&
		 * request.getParameter("actuelp") != null) {
		 * System.out.println("recalculer==" +
		 * request.getParameter("recalculer")); List<List<Double>> sav_resu =
		 * new ArrayList<List<Double>>(); List<List<Integer>> sav_info = new
		 * ArrayList<List<Integer>>();
		 * 
		 * String sav = request.getParameter("recalculer"); int actuels =
		 * Integer.parseInt(request.getParameter("actuels")); int actuelp =
		 * Integer.parseInt(request.getParameter("actuelp"));
		 * System.out.println("sav recalculer" + sav); int fin_info =
		 * sav.indexOf("]]"); int debu = sav.indexOf("[[["); int debut_resu =
		 * sav.indexOf(", [["); int fin = sav.indexOf("]]]"); String temp = sav;
		 * 
		 * String info = temp.substring(3, (fin_info)); String resu =
		 * temp.substring(debut_resu + 4, fin); System.out.println("info==" +
		 * info); System.out.println("resu==" + resu); int place = 0; int pl =
		 * 0; List<Integer> inf = null;
		 * 
		 * while (info.contains(",")) {
		 * 
		 * place = place + 1;
		 * 
		 * int pass = 0; String in = ""; if (info.contains("]")) {
		 * 
		 * in = info.substring(0, (info.indexOf("]"))); } else { in = info; pass
		 * = 1; } System.out.println("in==" + in);
		 * 
		 * int site = Integer.parseInt(in.substring(0, in.indexOf(",")));
		 * System.out.println("site==" + site); String s = in.substring(0,
		 * in.lastIndexOf(",")); int produit =
		 * Integer.parseInt(s.substring(s.indexOf(",") + 2,
		 * s.lastIndexOf(","))); System.out.println("produit==" + produit); int
		 * quantite = Integer.parseInt(s.substring( s.lastIndexOf(",") + 2,
		 * s.length()));
		 * 
		 * int conso = 0; System.out .println("subb=" +
		 * in.substring(in.lastIndexOf(",") + 2, in.length() - 1)); if
		 * (!in.substring(in.lastIndexOf(",") + 2, in.length() - 1) .equals(""))
		 * { conso = Integer.parseInt(in.substring( in.lastIndexOf(",") + 2,
		 * in.length() - 1)); } else conso = Integer.parseInt(in.substring(
		 * in.lastIndexOf(",") + 2, in.length()));
		 * System.out.println("quantite==" + quantite); if (info.contains("["))
		 * { info = info.substring(info.indexOf("[") + 1);
		 * System.out.println("info==" + info); } else { if (pass != 0) info =
		 * "";
		 * 
		 * } System.out.println("le site laaa==" + site + "le produitlaaaa=" +
		 * produit); System.out.println("le site aaa==" + actuels +
		 * "le produit aaaa=" + actuelp); if (site != actuels || produit !=
		 * actuelp) { inf = new ArrayList<Integer>(); inf.add(site);
		 * inf.add(produit); inf.add(quantite); inf.add(conso);
		 * sav_info.add(inf); } else { pl = place; System.out.println("place=="
		 * + pl); }
		 * 
		 * } System.out.println("infosav_inf==" + inf);
		 * System.out.println("infooooSavvv==" + sav_info); int plas = 0;
		 * 
		 * while (resu.contains(",")) { plas = plas + 1; List<Double> resus =
		 * new ArrayList<Double>(); String res = ""; int laP = 0; if
		 * (resu.contains("]")) {
		 * 
		 * res = resu.substring(0, (resu.indexOf("]"))); } else { res = resu;
		 * laP = 1;
		 * 
		 * }
		 * 
		 * Double racine = Double.parseDouble(res.substring(0,
		 * res.indexOf(","))); System.out.println("racine==" + racine);
		 * System.out.println("chaine==" +
		 * res.substring(res.indexOf(",")).indexOf(",")); String st =
		 * res.substring(res.indexOf(","));
		 * 
		 * Double ecart = Double.parseDouble(res.substring( res.indexOf(",") +
		 * 2, (res.lastIndexOf(",")))); System.out.println("ecart==" + ecart);
		 * Double secu = Double.parseDouble(res.substring( res.lastIndexOf(",")
		 * + 2, res.length())); System.out.println("secu==" + secu); if
		 * (resu.contains("[")) { resu = resu.substring(resu.indexOf("[") + 1);
		 * } else { if (laP != 0) resu = ""; }
		 * System.out.println("resu la chaine==" + res); if (plas != pl) {
		 * resus.add(racine); resus.add(ecart); resus.add(secu);
		 * sav_resu.add(resus); } else {
		 * System.out.println("pas pris en compte sec === " + secu); }
		 * 
		 * } request.setAttribute("resultat", sav_resu);
		 * request.setAttribute("infos", sav_info); request.setAttribute("noms",
		 * arg1)
		 * 
		 * getServletContext().getRequestDispatcher("/consulterDim.jsp")
		 * .forward(request, response);
		 * 
		 * }//
		 */

	}

}